/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package logica;

import java.lang.reflect.Method;
import modelo.Usuario;
import dao.UsuarioDAO;
import java.lang.reflect.InvocationTargetException;
import modelo.Usuario;

/**
 *
 * @author Elias Mendoza
 */
public class pruebaHora {
  
  public <Registro> void insertarFormulario(Registro r) {
    System.out.println(r.getClass().getSimpleName());
    String claseDAO = r.getClass().getSimpleName()+"DAO";
    System.out.println(claseDAO);
    Class clase;
    Class[] dao;
    Object obj;
    Object[] parametro;
    Method guardar;
    System.out.println("3");
    try {
      clase = Class.forName("UsuarioDAO");
      System.out.println("4");
      System.out.println(clase.getSimpleName());
      obj = clase.newInstance();
      dao = new Class[1];
      dao[0] = Class.forName(r.getClass().getSimpleName() + "DAO");
      guardar = clase.getMethod("guardar", dao);
      parametro = new Object[1];
      parametro[0] = r;
      guardar.invoke(obj, parametro);

    } catch (NoSuchMethodException e) {
      System.out.println("Error al acceder al metodo. " + e);
    } catch (SecurityException e) {
      System.out.println("Error al acceder al metodo. " + e);
    } catch (InvocationTargetException e) {
      System.out.println("Error al ejecutar el metodo. " + e);
    } catch (InstantiationException e) {
      System.out.println("Error al instanciar el objeto. " + e);
    } catch (IllegalAccessException e) {
      System.out.println("Error al instanciar el objeto. " + e);
    } catch (ClassNotFoundException e) {
    }

  }
  public static void main (String arg[]){
    pruebaHora ph = new pruebaHora();
    Usuario u = new Usuario();
    u.setDireccion("Lerdo de Tejada 25");
    System.out.println("1");
    ph.insertarFormulario(u);
  }
 
  

  
}
